#include "led.h"
#include "py32f0xx_hal.h"
#include "boardcfg.h"

void app_led_gpio_init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    /* GPIO Ports Clock Enable */
    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();

    /*Configure GPIO pin Output Level */
    HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_PIN, !LED1_ACTIVE);

    /*Configure GPIO pins*/
    GPIO_InitStruct.Pin = LED1_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(LED1_GPIO_PORT, &GPIO_InitStruct);
}

static void app_led1_on(void)
{
    HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_PIN, LED1_ACTIVE);
}

static void app_led1_off(void)
{
    HAL_GPIO_WritePin(LED1_GPIO_PORT, LED1_PIN, !LED1_ACTIVE);
}

static void app_led1_toggle(void)
{
    HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_PIN);
}

void app_led_sate_set(LED_STATE state)
{
    switch (state)
    {
    case E_LED_OFF:
        app_led1_off();
        break;
    case E_LED_ON:
        app_led1_on();
        break;
    case E_LED_TOGGLE:
        app_led1_toggle();
        break;
    default:
        break;
    }
}
